#include " Queue.h"

// 队列的初始化
Queue * Init_Queue(void)
{
    Queue * Q = (Queue * ) malloc(sizeof(Queue));
    if (NULL == Q)
    {
        printf("队列创建失败\n");
        return NULL;
    }
    // 设定初始化
    Q->front = Q->rear = 0;
    return Q;
}

// 队列的入队
void Enqueue(Queue * Q, Elenemt_data e)
{
    // 判断 栈是否存在
    if (NULL == Q)
    {
        puts("队列不存在\n");
        return ;
    }
    // 判满
    // if(Q->rear == Q->front && len == MAX)   //判断为满
    if ((Q->rear + 1) % MAX_SIZE == Q->front)
    {
        printf("队列已经满了");
    }
    
	// 传入数据
    Q->data[Q->rear] = e;
    // 迭代
    Q->rear = (Q->rear + 1) % MAX_SIZE;

}

// 队列的出队
void Dequeue(Queue * Q, Elenemt_data * e)
{
    // 判断 栈是否存在
    if (NULL == Q)
    {
        puts("队列不存在\n");
        return ;
    }
    // 判断为空
    if (Q->front == Q->rear)
    {
        printf("表为空\n");
        return ;
    }
    // 传入数据
    *e = Q->data[Q->front];
    // 进行迭代
    Q->front = (Q->front + 1) % MAX_SIZE;
}
// 队列的清空
void Clear_Queue(Queue * Q);

// 队列的查看
void Git_front(Queue * Q)
{
    printf("%s\n" , Q->data[Q->front].name);
}

// 队列的销毁
void Destroy_Queue(Queue ** Q)
{
    // 判断 栈是否存在
    if (NULL == Q)
    {
        puts("队列不存在\n");
        return ;
    }
    free(*Q);
    *Q = NULL;
}